﻿Imports System.Globalization

Public Class CUtil

    ''' <summary>
    ''' Modifica el separador decimal del numero que le llega de acuerdo a la cultura del equipo
    ''' </summary>
    ''' <param name="numero"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function FormatearNumero(ByVal numero As String) As Double
        If (numero.Trim().Length > 0) Then
            'Si el string contiene comas y puntos es porque tiene separador de decimales y separador de miles
            If (numero.Contains(".")) And (numero.Contains(",")) Then
                'Si encuentra primero las comas es porque las comas son el separador de miles y las elimina
                'y si son puntos los separadores de miles elimina los puntos
                If (numero.IndexOf(",") < numero.IndexOf(".")) Then
                    numero = numero.Replace(",", "")
                Else
                    numero = numero.Replace(".", "")
                End If
            End If

            Try
                If numero <> Double.Parse(numero, System.Globalization.CultureInfo.InvariantCulture).ToString Then
                    'Se reemplazan puntos por coma y comas por puntos
                    numero = numero.Replace(",", "?")
                    numero = numero.Replace(".", ",")
                    numero = numero.Replace("?", ".")
                End If
            Catch ex As Exception
                'Si hay error aqui, definitvamente llego algo que no es un numero
                Throw New Exception("No se pudo convertir '" & numero & "' a número (CUtil.FormatearNumero)")
            End Try
        Else
            numero = "0"
        End If
        Return CDbl(numero)


        'If (numero = "") Then
        '    Return 0
        'End If
        ''Se determina si el numero tiene decimales
        'Dim decimales As Double
        'decimales = numero - CInt(numero)
        'If decimales > 0 Then
        '    Dim userCulture As CultureInfo = New CultureInfo(CultureInfo.CurrentCulture.Name)
        '    If (userCulture.NumberFormat.NumberDecimalSeparator = ",") Then
        '        Return CDbl(numero.Replace(".", ","))
        '    Else
        '        Return CDbl(numero.Replace(",", "."))
        '    End If
        'Else
        '    Return numero
        'End If

    End Function

    ''' <summary>
    ''' Agrega un registro al principio de la tabla con valor cero y el texto que le llega
    ''' </summary>
    ''' <param name="dt"></param>
    ''' <param name="texto"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function AgregarRegistro(ByVal dt As DataTable, ByVal texto As String) As DataTable
        Dim dr As DataRow = dt.NewRow
        dr(0) = "0"
        dr(1) = texto
        dt.Rows.InsertAt(dr, 0)
        Return dt
    End Function

    ''' <summary>
    ''' Retorna la fecha que le llega en formato yyyymmdd
    ''' </summary>
    ''' <param name="fecha"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ConvertirFecha(ByVal fecha As Date) As String
        Dim mes As String = fecha.Month.ToString
        Dim dia As String = fecha.Day.ToString
        If (fecha.Month < 10) Then
            mes = "0" & mes
        End If
        If (fecha.Day < 10) Then
            dia = "0" & dia
        End If
        Return fecha.Year.ToString & mes & dia
    End Function
End Class
